package com.juli.school.utils.dao.dialect;

public class OracleDialect extends Dialect {
	
	@Override
	public String getLimitString(String sql, int offset, int limit) {
		sql = sql.trim();
		boolean isForUpdate = false;
		if (sql.toLowerCase().endsWith(" for update")) {
			sql = sql.substring(0, sql.length() - 11);
			isForUpdate = true;
		}
		StringBuffer pagingSelect = new StringBuffer(sql.length() + 100);
		pagingSelect.append("select * from ")
		.append("(select row_.*, rownum rownum_ from ( ").append(sql).append(" ) row_)")
		.append(" where rownum_ > ").append(offset).append(" and rownum_ <= " ).append(offset + limit);
		if (isForUpdate) {
			pagingSelect.append(" for update");
		}
		return pagingSelect.toString();
	}
}
